Hagamos un simple formulario/ventana dinámico en free pascal

Simplemente haz click en File | New … y se abre un nuevo formulario. Seleccionar Project | Application  y aparecerá Unit1 – Form1 en el editor.  Agregar un TButton del Standard Tab al formulario actual Form1.

Editar el atributo Caption del botón que recién hemos creado Button1 y lo cambiamos a «Dynamic Form» (o lo que les guste que aparezca en el botón).

Hacer doble click en el Button1 y aparecerá el editor de eventos con el código presente:

procedure TForm1.Button1Click(Sender: TObject);
begin

end;

Agregar el código siguiente a este manejador de eventos:

procedure TForm1.Button1Click(Sender: TObject);
var
MyForm: TForm;
MyButton: TButton;
begin
//Create MyForm
MyForm:=TForm.Create(nil);
//Set position and attributes
MyForm.SetBounds(100, 100, 220, 150);
MyForm.Caption:=’My dynamic created form’;

//Create Button
MyButton:=TButton.create(MyForm);
//Set size and attributes
MyButton.Caption:=’Close my form’;
MyButton.SetBounds(10, 10, 200, 30);
//Assign to parent form
MyButton.Parent:=MyForm;
//Event handler pointer to our procedure above…
MyButton.OnClick:=@MyButtonClick;
//Show My Wonderful Dynamic Form
MyForm.ShowModal;

//Destroy & Free all memory from it
FreeAndNil(MyForm);
end;

También agregar apenas antes de este manejador de eventos y después de {$R *.frm} { TForm1 } la siguiente funcion:

//Method/Event to close the dynamic form
procedure TForm1.MyButtonClick(Sender: TObject);
begin
//Just make sure who called us
if Sender is TButton then
begin
//warning you are about to close your wonderful form!!
Showmessage(‘Attention, my dynamically created form is closed!’);
TForm(TButton(Sender).Parent).Close;
end;
end;

Agregar lo siguiente en la declaración TForm1 luego de el procedimiento Button1Click(Sender: TObject);

procedure MyButtonClick(Sender: TObject);

Compilar y ejecutar.

Entradas relacionadas